草庐IT

C++: vector 的 vector

全部标签

c++ - 在不复制的情况下构造一个范围内的 vector

我有一个类包装了大量字节,这些字节是网络数据包。该类实现了一个队列并提供(除其他外)front()函数,该函数返回构成队列中最旧数据包的字节常量vector。classBuffer{unsignedchardata[65536];unsignedintoffset;unsignedintlength;[...]//otherfieldsformaintainingwriteptretc.public:conststd::vectorfront(){returnstd::vector(data+offset,data+offset+length);}//othermethodsforac

c++ - 为动态数据结构预分配内存

我有一个问题/好奇心。假设我想实现一个列表,例如我基本上可以使用cormenbook方法。其中解释了如何实现、插入、删除、键搜索等。然而,关于内存使用的内容却一无所获。例如,如果我想在整数列表中插入一个整数。例如,我可以先创建一个节点(我在那里分配内存)插入整数,然后将节点插入列表中。如果我想删除一个整数,一旦我知道存储在哪个节点中,我就必须释放内存。我现在想知道是否可以更方便地预分配内存来存储,比如说,10个节点并保留一个指向要使用的空闲节点的指针。如果内存池已满,那么我会为20个节点重新分配内存,如果内存池很大,我会分配该池大小的一半(依此类推)。池的管理当然更复杂,因为我需要例如

c++ - 在 C++ 中存储一组坐标集(成对 vector 的 vector ?)

首先,我是C++的新手,所以我可能不得不深入研究伪代码和/或Python来解释我正在尝试做的事情...我正在尝试为动画的每一帧存储多个Sprite的X和Y坐标对。我设想这类似于以下内容-假设PLAIN==1(使用枚举):animationFrames[PLAIN][0]={20,50}animationFrames[PLAIN][1]={25,55}等等。我基本上希望能够使用相关Sprite的ID查询animationFrames并接收一组X、Y坐标以进行迭代。我发现这很棘手。这是我的尝试,但没有用...std::vector>>frames={{{1,1},{2,2}//twofra

c++ - std::span.size() 与数组/vector 大小

我们在工作中使用std::span()(目前使用gsl实现)。最近我们发现将std::span.size()与vector.size()进行比较会产生-Wsign-compare错误:if(span.size()>vector.size())//comparisonbetweensignedandunsignedintegerexpressions[-Wsign-compare]我认为我们不想对这些比较中的每一个进行转换。我们的编码指南将这些警告视为错误。想知道是否有人有任何想法或建议? 最佳答案 您可以使用迭代器并同时使用函数st

c++ - 使用 Swig 将 Python 数组传递给 C++ vector

我在Python中有一个对象数组[obj1,obj2,obj3]我想将它们传递给C++函数以执行一些计算。我正在使用SWIG编写我的界面。传递对象的类类型已在C++中定义。执行此操作的最佳方法是什么? 最佳答案 这取决于您的函数是否已经编写且无法更改,在这种情况下,您可能需要检查Swig文档以查看是否已经存在从PyList到std::vector的类型映射(我认为存在)。如果不是,将PyObject*作为函数的参数并使用PythonCAPI来操作列表应该可以正常工作。到目前为止,我还没有遇到任何问题。对于self文档,我建议将PyO

c++ - 我如何获得 xPy 的所有排列?

我想计算一组大小为X的大小为Y的所有排列。也就是说,如果我有(1,2,3)并且想要大小为2、3P2的所有排列,它将是(1,2)(1,3)(2,1)(2,3)(3,1)(3,2).GSL和C++STL都只提供我能看到的xPx。有人可以指出可以执行此操作的C/C++库或拼出一种快速且内存高效的算法吗?我正在尝试破解一个非常短的密码。我已经找出两个字母并决定进行暴力攻击。我有“ouglgouyakl”并且正在根据一本非常好的字典检查每个排列。我已经消除了2个字母,所以它的24P7或1,744,364,160种可能性还不错。我现在有一个Perl程序正在运行,所以这将是对编程时间+运行时间的总效

c++ - 从树上摘苹果

我有以下问题:给我一棵有N个苹果的树,我为每个苹果指定了它的重量和高度。我可以摘到给定高度H的苹果,每次我摘一个苹果时,每个苹果的高度都会随着U的增加而增加。我必须找出我可以摘的苹果的最大重量。1≤N≤100000031例子:N=4H=100U=10heightweight823091109359415答案是45:先摘重量为15的苹果,再摘重量为30的苹果。有人可以帮我解决这个问题吗? 最佳答案 逆向工作。首先决定您要摘的最后一个苹果,然后是倒数第二个,依此类推。importheapqdefsolve(apples,H,U):"""

c++ - 用于实时曲面 segmentation 的 GLUTesselator?

我正在尝试使用OpenGL制作vector绘图应用程序,这将允许用户实时查看结果。我设置它的方式是使用边缘标志回调,因此glutesselator只输出三角形,然后我将其传递给VBO。我已经尝试让我的所有算法尽可能快,但这不是我的问题所在。根据一些代码分析器,我的速度大幅下降发生在对GLUTessEndPolygon()的调用中,这是生成多边形的函数。我发现当形状超过100个输入顶点时,它变得非常非常慢并且基本上破坏了我为优化其他一切所做的所有努力。我能做什么?我提供(0,0,1)的法线。我还尝试了GL红皮书中的所有技巧。有没有一种方法可以使tesselatortesselate更快但

c++ - 指向抽象类的指针 vector ,用于访问派生类成员

我是C++的新手,正在尝试实现一个turtle模拟器,它将从文本文件中读取命令,将它们放在一个vector上并使用glut绘制它们我有节点类、从节点派生的命令类、来自命令的4个派生类(forward、left、right、jump、repeat)和用于存储命令的Prog类。classnode{public:node();virtual~node();virtualvoidRun()=0;};classcommand:publicnode{private:floatv;public:command();command(float);~command();virtualvoidRun();

c++ - 修剪字符串 vector

我有一个std::vector的std::strings包含类似这样的数据:[0]=""[1]="Abc"[2]="Def"[3]=""[4]="Ghi"[5]=""[6]=""如何获得包含从1到4的4个字符串的vector?(即我想从vector的开头和结尾修剪所有空白字符串):[0]="Abc"[1]="Def"[2]=""[3]="Ghi"目前,我正在使用前向迭代器到达"Abc"并使用反向迭代器返回"Ghi",然后使用这些迭代器构建一个新的vector。这种方法可行,但我想知道是否有更简单的方法来修剪这些元素。附言我是C++菜鸟。编辑另外,我应该提到vector可能完全由空白字符